package com.admin.education.services.Interfaces;

import com.admin.education.common.exceptions.ResourceNotFoundException;
import com.admin.education.dataTransferObject.PageResponse;
import com.admin.education.dataTransferObject.ServicesExcuteResult;
import com.admin.education.dataTransferObject.categorys.Request.CreateCategoryRequest;
import com.admin.education.dataTransferObject.subject.Request.CreateSubjectRequest;
import com.admin.education.dataTransferObject.subject.Request.QuerySubjectRequest;
import com.admin.education.dataTransferObject.subject.Request.UpdateSubjectRequest;
import com.admin.education.dataTransferObject.subject.SubjectTransfer;

import javax.validation.Valid;

public interface ISubjectService {
    ServicesExcuteResult createSubject(@Valid CreateSubjectRequest createSubjectRequest);
    ServicesExcuteResult<SubjectTransfer> querySubjectById(long subjectId) throws ResourceNotFoundException;
    ServicesExcuteResult updateSubject(long subjectId, @Valid UpdateSubjectRequest updateSubjectRequest) throws ResourceNotFoundException;
    ServicesExcuteResult deleteSubject(long subjectId) throws ResourceNotFoundException;
    ServicesExcuteResult<PageResponse<SubjectTransfer>> querySubjects(@Valid QuerySubjectRequest querySubjectRequest);
}
